// example_device.c
#include <linux/module.h>
#include <linux/init.h>
#include <linux/platform_device.h>

// 设备资源（可选）
static struct resource example_resources[] = {
    [0] = {
        .start = 0x1000,
        .end   = 0x10FF,
        .flags = IORESOURCE_MEM,
    },
    [1] = {
        .start = 5,
        .end   = 5,
        .flags = IORESOURCE_IRQ,
    },
};

// 创建 platform_device
static struct platform_device example_device = {
    .name = "example_dev",
    .id = -1,  // -1 表示自动编号，不加后缀
    .num_resources = ARRAY_SIZE(example_resources),
    .resource = example_resources,
};

// 初始化函数：注册设备
static int __init example_device_init(void)
{
    pr_info("example_device: registering device\n");
    return platform_device_register(&example_device);
}

// 退出函数：注销设备
static void __exit example_device_exit(void)
{
    pr_info("example_device: unregistering device\n");
    platform_device_unregister(&example_device);
}

module_init(example_device_init);
module_exit(example_device_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("Platform Device Example");
